callback: (transaction: SQLTransaction, result: SQLResultSet) => void,
errorCallback: (transaction: SQLTransaction, error: SQLError) => void) => { var errorCallbackSafe = (t: SQLTransaction, e: SQLError) => { alert(e + ' ' + e.message + '\n' + sqlStatement + '\n' + args);
db.transaction((t) => t.executeSql(sqlStatement, args, callback, errorCallbackSafe));
this._insertMetadataSql = 'INSERT INTO "*metadata" (name, value) VALUES(?,?)';
this._updateMetadataSql = 'UPDATE "*metadata" SET value=? WHERE name=?';
this._metadataProperties = {}; this._loadTableListFromWebsql((tableList) => { this._initWithTableList(tableList, forceLoadFromDom, pathElements);
private _initWithStorage(load: teapo.storage.attached.LoadStorage, forceLoadFromDom: boolean, pathElements: { [name: string]: HTMLScriptElement; }) { var domEdited = this._metadataElement ?
safeParseInt(this._metadataElement.getAttribute('edited')) : if (domEdited || 0 < load.editedUTC || 0) { console.log('DOM is younger, need to call load.load', domEdited, load.editedUTC); console.log('DOM is older, need to call load.migrate', domEdited, load.editedUTC); var filesByName: { [fullPath: string]: { [propertyName: string]: string; }; } = { }; for (var fullPath in pathElements) if (pathElements.hasOwnProperty(fullPath)) { loadPropertyBagFromDom(pathElements[fullPath], pbag);
var contentStr = decodeFromInnerHTML(pathElements[fullPath].innerHTML);
console.log(Object.keys(pbag), fullPath, pathElements[fullPath]);
filesByName[fullPath] = pbag;
domEdited || new Date().valueOf(),
console.log('migrate completed: ', error, updater, filesByName); private _initWithTableList(tableList: string[], forceLoadFromDom: boolean, pathElements: { [name: string]: HTMLScriptElement; }) { var metadataTableExists = false;
for (var i = 0; i < tableList.length; i++) { if (tableList[i] === '*metadata') { metadataTableExists = true;
if (!metadataTableExists || forceLoadFromDom) { this._loadInitialStateFromDom(pathElements);
var domEdited = this._metadataElement ?
safeParseInt(this._metadataElement.getAttribute('edited')) : loadPropertiesFromWebSql(